package Clases;
 /**
 * 
 */


import java.io.Serializable;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;	
import javax.persistence.JoinColumns;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

/**
 * @author bruno_000
 *
 */
@Entity
@Table(name="encuentro",schema="bdd_II")
//@IdClass(Encuentro.class)
public class Encuentro implements Serializable {
	
	private int tiempo_juego;
	private int goles_locatario, goles_visitante;
	private Set<Arbitro> arbitros;
	
	private String fecha;
	private Seleccion local = new Seleccion();
	private Seleccion visitante = new Seleccion();
	
	private int Id;
	
	
	
	/**
	 * @return the id
	 */
	@Id
	@Column(name="Id")
	public int getId() {
		return Id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(int id) {
		Id = id;
	}

	/**
	 * @param tiempo_juego
	 * @param goles_locatario
	 * @param goles_visitante
	 * @param arbitros
	 * @param fecha
	 * @param local
	 * @param visitante
	 */
	public Encuentro(int tiempo_juego, int goles_locatario,
			int goles_visitante, Set<Arbitro> arbitros, String fecha,
			Seleccion local, Seleccion visitante) {
		this.tiempo_juego = tiempo_juego;
		this.goles_locatario = goles_locatario;
		this.goles_visitante = goles_visitante;
		this.arbitros = arbitros;
		this.fecha = fecha;
		this.local = local;
		this.visitante = visitante;
	}

	/**
	 * Constructor sin parametros
	 */
	public Encuentro(){}
	
	/**
	 * @return the fecha
	 */
	//@Id
	@Column(name="fecha")
	public String getFecha() {
		return fecha;
	}

	/**
	 * @param fecha the fecha to set
	 */
	public void setFecha(String fecha) {
		this.fecha = fecha;
	}

	/**
	 * @return the local
	 */
	//@Id
	@Column(name="nombre_pais_local")
	public Seleccion getLocal() {
		return local;
	}

	/**
	 * @param local the local to set
	 */
	public void setLocal(Seleccion local) {
		this.local = local;
	}

	/**
	 * @return the visitante
	 */
	//@Id
	@Column(name="nombre_pais_visitante")
	public Seleccion getVisitante() {
		return visitante;
	}

	/**
	 * @param visitante the visitante to set
	 */
	public void setVisitante(Seleccion visitante) {
		this.visitante = visitante;
	}

	/**
	 * @return the tiempo_juego
	 */
	@Column(name="tiempo_juego")
	public int getTiempo_juego() {
		return tiempo_juego;
	}

	/**
	 * @param tiempo_juego the tiempo_juego to set
	 */
	public void setTiempo_juego(int tiempo_juego) {
		this.tiempo_juego = tiempo_juego;
	}

	/**
	 * @return the goles_locatario
	 */
	@Column(name="goles_locatario")
	public int getGoles_locatario() {
		return goles_locatario;
	}

	/**
	 * @param goles_locatario the goles_locatario to set
	 */
	public void setGoles_locatario(int goles_locatario) {
		this.goles_locatario = goles_locatario;
	}

	/**
	 * @return the goles_visitante
	 */
	@Column(name="goles_visitante")
	public int getGoles_visitante() {
		return goles_visitante;
	}

	/**
	 * @param goles_visitante the goles_visitante to set
	 */
	public void setGoles_visitante(int goles_visitante) {
		this.goles_visitante = goles_visitante;
	}

	/**
	 * @return the arbitro
	 */
	@ManyToMany (fetch = FetchType.LAZY, cascade = CascadeType.ALL)
//	@JoinTable (name="arbitro_encuentro", 
//			joinColumns = {
//				@JoinColumn(name = "fecha", referencedColumnName="fecha"),
//				@JoinColumn(name = "nombre_pais_local", referencedColumnName="nombre_pais_local"),
//				@JoinColumn(name = "nombre_pais_visitante", referencedColumnName="nombre_pais_visitante")},
//			inverseJoinColumns = 
//				@JoinColumn(name="pasaporte"))
	@JoinTable(name="arbitro_encuentro",joinColumns=@JoinColumn(name="Id"),inverseJoinColumns=@JoinColumn(name="pasaporte"))
	public Set<Arbitro> getArbitros() {
		return arbitros;
	}

	/**
	 * @param arbitro the arbitro to set
	 */
	public void setArbitros(Set<Arbitro> arbitro) {
		this.arbitros = arbitro;
	}
}
